﻿using System;
using COMMON;
using DAL;
using VO;

namespace BLL
{
    public class CampanhaAtendenteBLL
    {

        #region Insert
        public static Retorno<CampanhaAtendente> Insert(CampanhaAtendente obj)
        {
            var objReturn = new Retorno<CampanhaAtendente>();
            try
            {
                //Insere Cliente
                new CampanhaAtendenteDAL().Insert(obj);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region Delete
        public static Retorno<CampanhaAtendente> Delete(int idCampanha)
        {
            var objReturn = new Retorno<CampanhaAtendente>();
            try
            {
                //Deleta atendente
                new CampanhaAtendenteDAL().Delete(idCampanha);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }

        public static Retorno<CampanhaAtendente> Delete(int idCampanha, int idAtendente)
        {
            var objReturn = new Retorno<CampanhaAtendente>();
            try
            {
                //Deleta atendente
                new CampanhaAtendenteDAL().Delete(idCampanha, idAtendente);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region Select
        public static Retorno<Campanha> Select(int idAtendente)
        {
            var objReturn = new Retorno<Campanha>();
            try
            {
                //Lista Campanhas do atendente
                objReturn.List = new CampanhaAtendenteDAL().Select(idAtendente);
                if (objReturn.List.Count > 0)
                {
                    objReturn.Error = Enumerator.Error.Success;
                    objReturn.Message = "OK";
                }
                else
                {
                    objReturn.Error = Enumerator.Error.NoRegistry;
                    objReturn.Message = "NOK";
                }
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }

        public static Retorno<CampanhaAtendente> Select(int idCampanha, string nomeAtendente = "", string letra = "")
        {
            var objReturn = new Retorno<CampanhaAtendente>();
            try
            {
                //Lista Campanhas do atendente
                objReturn.List = new CampanhaAtendenteDAL().Select(idCampanha, nomeAtendente, letra);
                if (objReturn.List.Count > 0)
                {
                    objReturn.Error = Enumerator.Error.Success;
                    objReturn.Message = "OK";
                }
                else
                {
                    objReturn.Error = Enumerator.Error.NoRegistry;
                    objReturn.Message = "NOK";
                }
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }

        public static Retorno<CampanhaAtendente> Select(int idCampanha, int idAtendente)
        {
            var objReturn = new Retorno<CampanhaAtendente>();
            try
            {
                //Lista Campanhas do atendente
                objReturn.List = new CampanhaAtendenteDAL().Select(idCampanha, idAtendente);
                if (objReturn.List.Count > 0)
                {
                    objReturn.Error = Enumerator.Error.Success;
                    objReturn.Message = "OK";
                }
                else
                {
                    objReturn.Error = Enumerator.Error.NoRegistry;
                    objReturn.Message = "NOK";
                }
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region CopiaAtendente
        public static Retorno<CampanhaAtendente> CopiaAtendente(int idCampanha, int idCampanhaNova)
        {
            var objReturn = new Retorno<CampanhaAtendente>();
            try
            {
                //Copia atendentes de uma campanha para outra
                new CampanhaAtendenteDAL().CopiaAtendente(idCampanha, idCampanhaNova);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region SelectAtendenteSemCampanha
        public static Retorno<CampanhaAtendente> SelectAtendenteSemCampanha(int idCampanha, string nomeAtendente = "", string letra = "")
        {
            var objReturn = new Retorno<CampanhaAtendente>();
            try
            {
                //Lista atendentes que não estão cadastrados na campanha
                objReturn.List = new CampanhaAtendenteDAL().SelectAtendenteSemCampanha(idCampanha, nomeAtendente, letra);
                if (objReturn.List.Count > 0)
                {
                    objReturn.Error = Enumerator.Error.Success;
                    objReturn.Message = "OK";
                }
                else
                {
                    objReturn.Error = Enumerator.Error.NoRegistry;
                    objReturn.Message = "NOK";
                }
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

        #region QuantidadeAtendenteCampanha
        public static Retorno<CampanhaAtendente> QuantidadeAtendenteCampanha(int idCampanha)
        {
            var objReturn = new Retorno<CampanhaAtendente>();
            try
            {
                //Retorna quantidade de atendentes da campanha
                objReturn.ID = new CampanhaAtendenteDAL().QuantidadeAtendenteCampanha(idCampanha);
                objReturn.Error = Enumerator.Error.Success;
                objReturn.Message = "OK";
            }
            catch (Exception ex)
            {
                objReturn.Error = Enumerator.Error.Failed;
                objReturn.Message = ex.Message;
            }
            return objReturn;
        }
        #endregion

    }
}